class Test {
    constructor(type) {
        switch (type) {
            case 'base':
                this.base()
                break;
            default:
                break;
        }
    }
    static go(type) {
        return new Test(type)
    }
    base() {
        console.log('ok');
    }
}
export {Test}

class q1check {
    static int({
        // 检查是否是整数
        // 返回一个布尔值
        nums = [1.1], // 传入数字数组
        num = null, // 传入数字
    }) {
        let re = false
        if (num === null) {
            if (nums.length === 0) {return false}
            re = nums.every(q1check._int)
        } else {
            re = q1check._int(num)
        }
        return re
    }
    static _int(v = 1.1) {
        // 检查传入值是否是整数
        // 返回布尔值
        switch (typeof(v)) {
            case 'number':
                let i = v | 0
                return v === i
            default:
                return false
        }
    }
    static long({
        // 检查字符串的长度
        // 返回一个布尔值
        sn = null, // 字符串或数字
        min = 0, // 最小长度
        max = null, // 最大长度
    }) {
        let str = sn
        if (min < 0) {return false}
        switch (typeof(sn)) {
            case 'number':
                str = String(sn)
            case 'string':
                let len = str.length
                if (len < min) {return false}
                if (max !== null && len > max) {return false}
                return true
            default:
                return false
        }
        if (typeof(str) !== 'string') {return false}
    }
}
export {q1check}

class q1array {
    static sort({
        // 对数组排序, 'smaller'从大到小, 'biger'从小到大，其余值不排序
        // 返回一个数组
        arr = [new Number()], // 数字数组
        type = '', // 如何排序
    }) {
        let b = arr.every((v) => {return typeof(v) === 'number'})
        if (!b) {return false}
        console.log('tuch');
        switch (type) {
            case 'smaller':
                arr.sort((a, b) => {return b - a})
                break;
            case '':
            case 'biger':
            case 'bigger':
                arr.sort((a, b) => {return a - b})
                break;
            default:
                break;
        }
        return arr
    }
}
export {q1array}

class q1math {
    static random({
        // 获取一个或多个范围内的随机数
        // 根据number返回一个数或一个数的数组, 取值为闭区间
        min = 0, // 最小值
        max = 100, // 最大值
        number = 1, // 个数，为1时返回一个数，否则返回数组
        sort = '', // 是否对返回的数组排序, 'smaller'从大到小, 'biger'从小到大，其余值不排序
    }) {
        if(!q1check.int({nums: [min, max]})) {return false}
        if (max < min) {return false}
        max++
        if (max - min < number) {return false}

        if (number === 1) {
            return q1math._random(min, max)
        } else {
            let reSet = new Set()
            while (reSet.size !== number) {
                reSet.add(q1math._random(min, max))
            }
            let re = [...reSet]
            if (sort !== '') {
                re = q1array.sort({arr: re, type: sort})
            }
            return re
        }
    }
    static _random(min, max) {
        // 获取一个范围内的随机数
        let dt = max - min
        let ran = Math.random() * dt | 0
        return ran + min
    }
}
export {q1math}

let cglang = (self, lang = '0') => {
    let l = self.$store.state.setting.lang === 'cn' ? 'en' : 'cn'
    if (lang !== '0') {
        l = lang
    }
    sessionStorage.lang = l
    self.$store.commit('set_lang', l)
}
export {cglang}

let bg = (l) => {
    return `background-image: url(${l});`
}
export {bg}

let phoneHandle = (s) => {
    s += ''
    let q = s.match(/^\d{3}/)[0]
    let w = s.match(/\d{4}$/)[0]
    let re = q + '****' + w
    return re
}

let emailHandle = (s) => {
    s = '****' + s.match(/\S{2}@\S+\.\S+/)[0]
    return s
}
export {phoneHandle, emailHandle}

let time = {
    dd: null,
    init() {
        let re = this.dd == null ? new Date() : new Date(this.dd)
        return re
    },
    handle(n) {
        n = '0' + n
        return n.match(/\d{2}$/)[0]
    },
    y() {
        return this.init().getFullYear() + ''
    },
    m() {
        let re = this.init().getMonth() + 1
        return  this.handle(re)
    },
    d() {
        let re = this.init().getDate()
        return this.handle(re)
    },
    h() {
        let re = this.init().getHours()
        return this.handle(re)
    },
    min() {
        let re = this.init().getMinutes()
        return this.handle(re)
    },
    s() {
        let re = this.init().getSeconds()
        return this.handle(re)
    },
    t6(ii) {
        this.dd = ii
        let re = `${this.y()}-${this.m()}-${this.d()} ${this.h()}:${this.min()}:${this.s()}`
        return re
    }
}
export {time}